/***********************************************************************************************//**
*\n  @file       main.c
*\n  @brief      测试nandflash的写入速度
*\n  @details
*\n -----------------------------------------------------------------------------------
*\n  文件说明：
*\n       1. 测试nandflash的写入速度
*\n       2. 写入2KB数据到nandflash，并测试写入时间。
*\n       
*\n       
*\n -----------------------------------------------------------------------------------
*\n  版本:   	修改人:       修改日期:        描述:
*\n  V0.01  罗先能        2020.4.27    创建
*\n 
***************************************************************************************************/

/**************************************************************************************************
* 头文件
***************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <signal.h>
#include <libgen.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h> 
#include <sys/uio.h>
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <sys/file.h>
#include <net/if.h>
#include <errno.h>
#include <pthread.h>

#include "cpu_occupy.h"



/**************************************************************************************************
* 宏定义、结构定义
***************************************************************************************************/
/// 调试信息
#if MAIN_DEBUG
#define PCL_NONE				 "\e[0m"
#define PCL_YELLOW				 "\e[1;33m"
#define PCL_RED 				 "\e[0;31m"

#define dbg_printf(...)   \
	do{ printf(PCL_NONE "[%s,%d,%s] ", __FILE__, __LINE__, __func__); \
		printf(__VA_ARGS__); }while(0)

	
#define dbg_info(buffer,size, ...)   \
	do{ 	printf(PCL_NONE "[%s,%d,%s] ", __FILE__, __LINE__, __func__); \
			printf(__VA_ARGS__); \
			char *p = (char*)buffer; \
			int ii_; \
			for (ii_=0; ii_<(int)size; ii_++) \
			{   printf("%02x ", *(p++)); if ((ii_ != 0) && (ii_ % 32 == 0)) printf("\n"); \
			} \
			if (ii_ % 32 != 0) printf("\n"); \
	}while(0)

	
#define dbg_warn(...)   \
		do{ printf(PCL_YELLOW "[warn,%s,%d,%s] ", __FILE__, __LINE__, __func__); \
		printf(__VA_ARGS__); }while(0)

#define dbg_error(...)   \
	do{ printf(PCL_RED "[error,%s,%d,%s] ", __FILE__, __LINE__, __func__); \
		printf(__VA_ARGS__); }while(0)

#define dbg_fatal(...)   \
	do{ printf(PCL_RED "[fatal,%s,%d,%s] ", __FILE__, __LINE__, __func__); \
		printf(__VA_ARGS__); }while(0)

#else
#define dbg_error(...)
#define dbg_fatal(...)
#define dbg_warn(...)
#define dbg_printf(...)
#define dbg_info(...)
#endif


/**************************************************************************************************
* 全局变量声明、定义
***************************************************************************************************/


/**************************************************************************************************
* 私有变量声明、定义
***************************************************************************************************/


/**************************************************************************************************
* 私有函数声明、定义
***************************************************************************************************/
static int write_file(const char *path, const void *data, int len)
{
	FILE *fp = fopen(path, "wb");
	int size = -1;
	if (fp) {
		size = fwrite(data, 1, len, fp);
		fclose(fp);
	}
	return size;
}


/**************************************************************************************************
* 全局函数声明、定义
***************************************************************************************************/
int main(int argc, char *argv[])
{
	int ret;
	char buf[16*1024];
	

	uint64_t  time1 = cpu_get_time_now_ms();
	ret = write_file("./write16kbyte.bin", buf, 16*1024);
	uint64_t  time2 = cpu_get_time_now_ms();

	printf("time = %d ms\n", (int)(time2 - time1));
	
	return 0;
}




